Estructura de Datos con C++ by César Liza Ávila

Estructura de Datos con C++ by César Liza Ávila

autor:César Liza Ávila
La lengua: spa
Format: epub
editor: Vearsa
publicado: 2013-03-18T16:00:00+00:00


5.4. INDICAR EL MOVIMIENTO A REALIZAR EN LAS TORRES DE HANÓI

Permita que el usuario indique el movimiento a realizar en el problema de las torres de Hanói (ver problema 1.16 de este libro). Sugerencia: use tres pilas.

Solución:

Los anillos colocados en la cima de cada torre son los primeros en ser retirados. Este es justamente el comportamiento de las pilas, así que definimos tres. Cada una representa una torre y las inicializamos a NULL. Leemos el número de anillos deseado (n) y colocamos en la primera pila cada número (i) que representa el tamaño del anillo. Colocamos los mayores primero e imprimimos el estado inicial de cada torre.

Debemos mover cada anillo desde una torre hacia otra, con la condición de que un anillo de mayor valor nunca se coloque encima de otro menor. Las condiciones utilizadas en el programa contemplan todas las posibilidades de movimiento entre torres. Después de cada movimiento, imprimimos las torres e incrementamos el contador. Esto se repite hasta que las torres 1 y 2 no tengan anillos; vale decir, hasta que todos los anillos estén en la torre 3.

La función mover( ) comprueba si el movimiento es válido. Para ello, la torre de origen (a) debe tener anillos (a!=NULL). Si la pila destino (b) tiene elementos, debemos comprobar que el anillo a mover (a->nro) sea de menor diámetro que el anillo de la torre destino (b->nro), en cuyo caso retiramos el anillo de la torre origen y lo colocamos en la torre destino (push(b, pop(a)). Si el anillo a mover es de mayor diámetro que el ubicado en la cima de la torre destino, entonces se mostrará un mensaje de error. Si la pila destino está vacía, movemos el anillo desde la torre de origen, sin ninguna otra comprobación. Si la torre de origen está vacía, no habrá ningún movimiento.



descargar



Descargo de responsabilidad:
Este sitio no almacena ningún archivo en su servidor. Solo indexamos y enlazamos.                                                  Contenido proporcionado por otros sitios. Póngase en contacto con los proveedores de contenido para eliminar el contenido de derechos de autor, si corresponde, y envíenos un correo electrónico. Inmediatamente eliminaremos los enlaces o contenidos relevantes.